package com.mbc.service;


import com.github.pagehelper.PageInfo;
import com.mbc.comment.Result;
import com.mbc.dto.StrayAnimalInformationCommentsSectionDTO;
import com.mbc.dto.StrayAnimalInformationDTO;
import com.mbc.pojo.AnimalLabel;
import com.mbc.vo.StrayAnimalInformationCommentsSectionVO;
import com.mbc.vo.StrayAnimalInformationVO;

/**
 * <p>
 * 云助流量动物信息 服务类
 * </p>
 *
 * @author suimeng
 * @since 2024-06-06
 */
public interface StrayAnimalInformationService {

    /**
     * 插入动物信息
     *
     * @param userId         用户 ID
     * @param informationDTO 信息 DTO
     * @return boolean
     */
    boolean insertAnimalInformation(Integer userId, StrayAnimalInformationDTO informationDTO);

    /**
     * 新增流浪动物信息评论
     *
     * @param userId     用户 ID
     * @param animalId   动物 ID
     * @param sectionDTO DTO 部分
     * @return boolean
     */
    boolean insertStrayAnimalInformationCommentSection(Integer userId, Integer animalId,
                                                       StrayAnimalInformationCommentsSectionDTO sectionDTO);

    /**
     * 插入动物标签
     *
     * @param labelId 标签 ID
     * @param label   标签
     * @return boolean
     */
    boolean insertAnimalLabel(Integer labelId, String label);

    /**
     * 分页查询流浪动物信息评论区
     *
     * @param animalId 动物 ID
     * @param page     页
     * @param size     大小
     * @return {@link PageInfo }<{@link StrayAnimalInformationCommentsSectionVO }>
     */
    PageInfo<StrayAnimalInformationCommentsSectionVO> selectStrayAnimalInformationCommentSection(Integer animalId, Integer page, Integer size);

    /**
     * 查询动物信息
     *
     * @param animalId 动物 ID
     * @return {@link StrayAnimalInformationVO }
     */
    StrayAnimalInformationVO selectAnimalInformation(Integer animalId);

    /**
     * 更新点赞数
     *
     * @param animalId 动物 ID
     * @param status   地位
     * @return boolean
     */
    boolean updateNumberOfLikes(Integer animalId,Integer status);

    /**
     * 删除评论
     *
     * @param animalId 动物 ID
     * @param userId   用户 ID
     * @return boolean
     */
    boolean deleteStrayAnimalInformationCommentSection(Integer animalId, Integer userId);

    boolean deleteAnimalInformation(Integer animalId);

    /**
     * 更新动物信息
     *
     * @param animalId             动物 ID
     * @param animalInformationDTO 动物信息DTO
     * @return boolean
     */
    boolean updateAnimalInformation(Integer animalId, StrayAnimalInformationDTO animalInformationDTO);
}
